﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using LogicaNegocio;
using Entities;
namespace Presentacion.Ventas
{
    public partial class ConsultarVentas : System.Web.UI.Page
    {
        private static string op;
        private GestorFacturas gFacturas;
        private GestorClientes gClientes;
        private static bool esFiltrada = false;
        private bool validarRolUsuario()
        {
            GestorSeguridad gSeguridad = new GestorSeguridad();
            string[] lstroles = gSeguridad.ObtenerRoles(HttpContext.Current.User.Identity.Name.ToString()).Split('|');
            if (lstroles != null && lstroles.Length > 0)
            {
                foreach (string item in lstroles)
                {
                    if (item == "Admin" || item == "Usuario" || item == "SuperUser")
                    {
                        return true;
                    }
                }
            }
            return false;
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                op = Request.QueryString["op"].ToString();
                cargarGrillaVentas();
                //if (!validarRolUsuario())
                //{
                //    Response.Redirect("~/AccesoNoAutorizado.aspx");
                //}
            }
            Page.Title = "Consultar Ventas";
        }

        protected void btnFiltrar_Click(object sender, EventArgs e)
        {
            cargarGrillaVentasFiltrada();
        }
        private void cargarGrillaVentas()
        {
            try
            {
                esFiltrada = false;
                grdFacturas.DataSource = null;
                gFacturas = new GestorFacturas();
                gClientes = new GestorClientes();
                List<Factura> lstFacturas = gFacturas.ObtenerTodosPendientes();
                Estado_Factura est = null;
                Cliente cli = null;
                if (lstFacturas != null)
                {
                    foreach (Factura item in lstFacturas)
                    {
                        est = gFacturas.Estado_Factura_BuscarPorId(item.IdEstadoFactura);
                        if (est != null)
                            item.EstadoFactura = est.Nombre;
                        else
                            item.EstadoFactura = "Sin Datos";
                        cli = gClientes.BuscarPorId(item.IdCliente);
                        if (cli != null)
                            item.Cliente = cli.Apellido + ", " + cli.Nombre;
                        else
                            item.Cliente = "Sin Datos";
                    }
                    grdFacturas.DataSource = lstFacturas;
                    string[] claves = { "idFactura" };
                    grdFacturas.DataKeyNames = claves;
                    grdFacturas.DataBind();
                }
                else
                {
                    grdFacturas.DataSource = null;
                    grdFacturas.DataBind();
                }
            }
            catch (Exception ex)
            {
                lblMensajeError.Text = ex.Message;
            }
            //esFiltrada = false;
            //grdFacturas.DataSource = null;
            //gFacturas = new GestorFacturas();
            //gClientes = new GestorClientes();
            //List<Factura> lstFacturas=gFacturas.ObtenerTodosPendientes();
            //Estado_Factura est = null;
            //Cliente cli = null;
            //if (lstFacturas!=null)
            //{
            //    foreach (Factura item in lstFacturas)
            //    {
            //        est = gFacturas.Estado_Factura_BuscarPorId(item.IdEstadoFactura);
            //        if (est != null)
            //            item.EstadoFactura = est.Nombre;
            //        else
            //            item.EstadoFactura="Sin Datos";
            //        cli = gClientes.BuscarPorId(item.IdCliente);
            //        if (cli != null)
            //            item.Cliente = cli.Apellido + ", " + cli.Nombre;
            //        else
            //            item.Cliente = "Sin Datos";
            //    }
            //    grdFacturas.DataSource = lstFacturas;
            //    string[] claves = { "idFactura" };
            //    grdFacturas.DataKeyNames=claves;
            //    grdFacturas.DataBind();
            //}
            //else
            //{
            //    grdFacturas.DataSource = null;
            //    grdFacturas.DataBind();
            //}
        }
        private void cargarGrillaVentasFiltrada()
        {
            try
            {
                esFiltrada = true;
                DateTime? fechaDesde = null;
                DateTime? fechaHasta = null;

                if (calendarDesde.SelectedDate != DateTime.MinValue)
                    fechaDesde = calendarDesde.SelectedDate;
                if (calendarHasta.SelectedDate != DateTime.MinValue)
                    fechaHasta = calendarHasta.SelectedDate;

                grdFacturas.DataSource = null;
                gFacturas = new GestorFacturas();
                gClientes = new GestorClientes();
                List<Factura> lstFacturas = gFacturas.ObtenerTodasFiltradas(fechaDesde, fechaHasta);
                Estado_Factura est = null;
                Cliente cli = null;
                if (lstFacturas != null)
                {
                    foreach (Factura item in lstFacturas)
                    {
                        est = gFacturas.Estado_Factura_BuscarPorId(item.IdEstadoFactura);
                        if (est != null)
                            item.EstadoFactura = est.Nombre;
                        else
                            item.EstadoFactura = "Sin Datos";
                        cli = gClientes.BuscarPorId(item.IdCliente);
                        if (cli != null)
                            item.Cliente = cli.Apellido + ", " + cli.Nombre;
                        else
                            item.Cliente = "Sin Datos";
                    }
                    grdFacturas.DataSource = lstFacturas;
                    string[] claves = { "idFactura" };
                    grdFacturas.DataKeyNames = claves;
                    grdFacturas.DataBind();
                }
                else
                {
                    grdFacturas.DataSource = null;
                    grdFacturas.DataBind();
                }
            }
            catch (Exception ex)
            {
                lblMensajeError.Text = ex.Message;
                throw;
            }
            //esFiltrada = true;
            //DateTime? fechaDesde = null;
            //DateTime? fechaHasta = null;

            //if (calendarDesde.SelectedDate != DateTime.MinValue)
            //    fechaDesde = calendarDesde.SelectedDate;
            //if (calendarHasta.SelectedDate != DateTime.MinValue)
            //    fechaHasta = calendarHasta.SelectedDate;

            //grdFacturas.DataSource = null;
            //gFacturas = new GestorFacturas();
            //gClientes = new GestorClientes();
            //List<Factura> lstFacturas = gFacturas.ObtenerTodasFiltradas(fechaDesde, fechaHasta);
            //Estado_Factura est = null;
            //Cliente cli = null;
            //if (lstFacturas != null)
            //{
            //    foreach (Factura item in lstFacturas)
            //    {
            //        est = gFacturas.Estado_Factura_BuscarPorId(item.IdEstadoFactura);
            //        if (est != null)
            //            item.EstadoFactura = est.Nombre;
            //        else
            //            item.EstadoFactura = "Sin Datos";
            //        cli = gClientes.BuscarPorId(item.IdCliente);
            //        if (cli != null)
            //            item.Cliente = cli.Apellido + ", " + cli.Nombre;
            //        else
            //            item.Cliente = "Sin Datos";
            //    }
            //    grdFacturas.DataSource = lstFacturas;
            //    string[] claves = { "idFactura" };
            //    grdFacturas.DataKeyNames = claves;
            //    grdFacturas.DataBind();
            //}
            //else
            //{
            //    grdFacturas.DataSource = null;
            //    grdFacturas.DataBind();
            //}
        }

        protected void grdFacturas_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                int idFactura = (int)grdFacturas.SelectedDataKey[0];
                op = Request.QueryString["op"].ToString();
                Cliente auxCli = null;
                Estado_Factura auxEF = null;
                if (op.Equals("buscar"))
                {
                    gFacturas = new GestorFacturas();
                    gClientes = new GestorClientes();
                    Factura fact = gFacturas.BuscarPorId(idFactura);
                    if (fact != null)
                    {
                        auxCli = gClientes.BuscarPorId(fact.IdCliente);
                        auxEF = gFacturas.Estado_Factura_BuscarPorId(fact.IdEstadoFactura);
                        if (auxCli != null)
                            fact.Cliente = auxCli.Apellido + ", " + auxCli.Nombre;
                        else
                            fact.Cliente = "Sin Datos";
                        if (auxEF != null)
                            fact.EstadoFactura = auxEF.Nombre;
                        else
                            fact.EstadoFactura = "Sin Datos";
                        Session["FacturaSelect"] = fact;
                        Response.Redirect("~/Repartos/Repartos.aspx");
                    }
                }
            }
            catch (Exception ex)
            {
                lblMensajeError.Text = ex.Message;
                throw;
            }
            //int idFactura = (int)grdFacturas.SelectedDataKey[0];
            //op = Request.QueryString["op"].ToString();
            //Cliente auxCli = null;
            //Estado_Factura auxEF = null;
            //if (op.Equals("buscar"))
            //{
            //    gFacturas = new GestorFacturas();
            //    gClientes = new GestorClientes();
            //    Factura fact = gFacturas.BuscarPorId(idFactura);
            //    if (fact != null)
            //    {
            //        auxCli = gClientes.BuscarPorId(fact.IdCliente);
            //        auxEF = gFacturas.Estado_Factura_BuscarPorId(fact.IdEstadoFactura);
            //        if (auxCli != null)
            //            fact.Cliente = auxCli.Apellido + ", " + auxCli.Nombre;
            //        else
            //            fact.Cliente = "Sin Datos";
            //        if (auxEF != null)
            //            fact.EstadoFactura = auxEF.Nombre;
            //        else
            //            fact.EstadoFactura = "Sin Datos";
            //        Session["FacturaSelect"] = fact;
            //        Response.Redirect("~/Repartos/Repartos.aspx");
            //    }
            //}
        }
        protected void grdFacturas_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            grdFacturas.PageIndex = e.NewPageIndex;
            if (esFiltrada)
                cargarGrillaVentasFiltrada();
            else
                cargarGrillaVentas();
        }
    }
}